#ifndef _MICROBE_AI_H_
#define _MICROBE_AI_H_

#include <dll.h>
#include <microbe.h>

enum ExampleAIStateType
{
  EXAMPLE_STATE_NORMAL,
  EXAMPLE_STATE_AVOID_WALL
};

struct ExampleAIState
{
  ExampleAIStateType type;
  float angle;
};

class ExampleAI: public AI
{
  public:
  ExampleAI();
  
  void think(const AIData& data, MicrobeOrder* order[SIM_MAX_MICROBES],
    int dM, float dT);
  
  private:
  void transitionState(const AIData& data);
  void executeState(const AIData& data, MicrobeOrder* order[SIM_MAX_MICROBES]);
  
  ExampleAIState state;
};

extern "C"
{

DLL_EXPORT AI* AI_create();

}

#endif
